﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IStudiesService.cs" company="ELEN 7045 GROUP II">
//   Contributed by E.Vosloo
// </copyright>
// <summary>
//   The Studies Service Contract
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Presentation.Module.StudyDefinition.Interfaces.Services
{
    #region

    using System.Collections.ObjectModel;

    using Presentation.Module.StudyDefinition.Models;

    #endregion

    /// <summary>
    /// The Studies Service Contract
    /// </summary>
    public interface IStudiesUIProxyService
    {
        #region Public Methods

        /// <summary>
        /// Adds the specified study.
        /// </summary>
        /// <param name="study">
        /// The study.
        /// </param>
        /// <returns>
        /// The add study.
        /// </returns>
        Study AddStudy(Study study);

        /// <summary>
        /// Adds the specified subject group.
        /// </summary>
        /// <param name="subjectGroup">
        /// The subject group.
        /// </param>
        /// <returns>
        /// The add subject group.
        /// </returns>
        SubjectGroup AddSubjectGroup(SubjectGroup subjectGroup);

        /// <summary>
        /// Adds the specified treatment.
        /// </summary>
        /// <param name="treatment">
        /// The treatment.
        /// </param>
        /// <returns>
        /// The added treatment.
        /// </returns>
        Treatment AddTreatment(Treatment treatment);

        /// <summary>
        /// Edits the specified study.
        /// </summary>
        /// <param name="study">
        /// The study.
        /// </param>
        void EditStudy(Study study);

        /// <summary>
        /// Edits the specified subject group.
        /// </summary>
        /// <param name="subjectGroup">
        /// The subject group.
        /// </param>
        void EditSubjectGroup(SubjectGroup subjectGroup);

        /// <summary>
        /// Edits the specified treatment.
        /// </summary>
        /// <param name="treatment">
        /// The treatment.
        /// </param>
        void EditTreatment(Treatment treatment);

        /// <summary>
        /// Gets all studies.
        /// </summary>
        /// <returns>
        /// Study Collection
        /// </returns>
        ObservableCollection<Study> GetAllStudies();

        /// <summary>
        /// Gets all subject groups.
        /// </summary>
        /// <returns>
        /// Subject Group Collection
        /// </returns>
        ObservableCollection<SubjectGroup> GetAllSubjectGroups();

        /// <summary>
        /// Gets all treatments.
        /// </summary>
        /// <returns>
        /// Treatment Collection
        /// </returns>
        ObservableCollection<Treatment> GetAllTreatments();

        /// <summary>
        /// Removes the specified study.
        /// </summary>
        /// <param name="study">
        /// The study.
        /// </param>
        void RemoveStudy(Study study);

        /// <summary>
        /// Removes the specified subject group.
        /// </summary>
        /// <param name="subjectGroup">
        /// The subject group.
        /// </param>
        void RemoveSubjectGroup(SubjectGroup subjectGroup);

        /// <summary>
        /// Removes the specified treatment.
        /// </summary>
        /// <param name="treatment">
        /// The treatment.
        /// </param>
        void RemoveTreatment(Treatment treatment);
        #endregion
    }
}
